package gameplaying;

import java.util.Scanner;

public class BaShiGame {

	public static void main(String[] args) {
		BaShiGame object = new BaShiGame();
		object.getResIII();
	}
	
	//Runtime：312MS
	//HDU2188  轮流捐款,每次只能捐1~M元，最先到达n元或以上的获胜
	public void getRes(){
		Scanner scanner = new Scanner(System.in);
		int testCases = scanner.nextInt();
		for(int t = 1; t <= testCases; t++){
			int n = scanner.nextInt();
			int m = scanner.nextInt();
			if((n % (m + 1)) == 0){
				System.out.println("Rabbit");
			}else{
				System.out.println("Grass");
			}
		}
		scanner.close();
	}
	
	//Runtime: 312MS
	//HDU 2149  轮流加价，每次只能加1~n元，最先到达m元或以上的获胜，需要输出策略
	public void getResII(){
		Scanner scanner = new Scanner(System.in);
		while(scanner.hasNext()){
			int m = scanner.nextInt();
			int n = scanner.nextInt();
			if((m % (n + 1)) == 0){
				System.out.println("none");
			}else{
				//if(m <= n), the first strategy is: m, m + 1 ... n
				if(m <= n){
					System.out.print(m);
					for(int i = m + 1; i<= n; i++){
						System.out.print(" " + i);
					}
					System.out.println();
				}else{
					//if(m > n),  the first strategy is: m % (n + 1)
					System.out.println(m % (n + 1));
				}
			}
		}
		scanner.close();
	}
	
	
	//k倍动态减法游戏
	private static final int MAX = 20000;
	
	// 数组a和b
	// a[],  这个数列要满足任何一个不在这个数列里面的数都可以用这个数列里多项的和表示，
	// 但需满足前一项的k倍小于后一项的前提条件。（看到这里是不是很疑惑，比如第一项是1，k = 3，
	// 那第二项不就是4了，怎么构造2和3呢，且看下面的）
	// 为了求出这个数组，我们引入另一个数组b，b[i]表示a[0...i]可以找到多项，任意相邻的两项
	// a[x]和a[y]都满足a[x] * k < a[y],
	// 且和最大时候的值。
	
	//假设a数列的前i项已经求出来了，由于前i项最多可以构造b[i]，b[i] + 1无法构造，所以a[i + 1]就是b[i] + 1
	//那我们接下来要求b[i + 1]
	//我们找到满足条件的a[x] * k < a[i + 1],得到最大的x之后，b[x]是前x项所能构造的最大和
	//那么我们现在所能构造的最大和为a[i + 1 + b[x]
	//如果没有x满足条件(比如初始只有1、2个元素时且k!= 1时)，那么b[i + 1]就只需要一个数即可
	//此时a[i + 1]最大，所以b[i + 1] = a[i + 1]
	
	//if(a[x] * k < a[i + 1] ){
	//		b[i + 1] = b[x] + a[i + 1]
	//}else{
	//		b[i + 1] = a[i + 1]
	//}

	int[] a = new int[MAX];
	int[] b = new int[MAX];
	
	
	//Hdu2486 Runtime: 358MS
	//巴什博弈,k倍动态变化
	public void getResIII(){
		//石子数和k倍
		int n, k;
		Scanner scanner = new Scanner(System.in);
		int testCases = scanner.nextInt();
		for (int t = 1; t <= testCases; t++) {
			//石子数和k倍
			n = scanner.nextInt();
			k = scanner.nextInt();
			//初始化
			a[0] = b[0] = 1;
			int i = 0, j = 0;
			while(n > a[i]){
				i++;
				//a[i + 1] = b[i] + 1
				a[i] = b[i - 1] + 1;
				// System.out.println("i : " + a[i]);
				//找到满足条件的最大的下标
				while(a[j + 1] * k < a[i]){
					j++;
				}
				if(a[j] * k < a[i]){
					b[i] = b[j] + a[i];
				}else{
					b[i] = a[i]; 
				}
			}
//			for(int temp = 0; temp <= i; temp++){
//				System.out.println("a[i]: " + a[temp] + " b[i]: " + b[temp]);
//			}
			//如果石子数等于a[i]中的数，那么先手必败
			if(n == a[i]){
				System.out.println("Case " + t + ": lose");
				continue;
			}
			//输出第一回合拿走的最少石头数
			int ans = 0;
			// n = n1 + n2 + n3 +...
			while(n > 0){
				//就是求最小的n1
				if(n >= a[i]){
					n -= a[i];
					ans = a[i];
				}
				i--;
			}
			//输出取得最小的数
			System.out.println("Case " + t + ": " + ans);
		}
		scanner.close();
	}
}
